namespace CSW.Framework.Common.Binding.Interfaces
{
    /// <summary>
    /// IDataSelectionList interface.  See <see cref="DataSelectionList{T}" />.
    /// </summary>
    public interface IDataSelectionList
    {
        /// <summary>
        /// Selects an item.
        /// </summary>
        /// <param name="item">The item to select.</param>
        void SelectItem(object item);
        
        /// <summary>
        /// Selects all items.
        /// </summary>
        void SelectAll();
        
        /// <summary>
        /// Deselects an item.
        /// </summary>
        /// <param name="item">The item to deselect.</param>
        void DeselectItem(object item);
        
        /// <summary>
        /// Deselects all items.
        /// </summary>
        void DeselectAll();
        
        /// <summary>
        /// Reverts to saved.
        /// </summary>
        void RevertToSaved();
        
        /// <summary>
        /// Accepts the changes.
        /// </summary>
        void AcceptChanges();

        /// <summary>
        /// Gets the available items.
        /// </summary>
        /// <value>The available items.</value>
        object AvailableItems { get; }

        /// <summary>
        /// Gets the selected items.
        /// </summary>
        /// <value>The selected items.</value>
        object SelectedItems { get; }
    }
}